package com.example.zhxy.controller;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.zhxy.model.Grade;
import com.example.zhxy.service.GradeService;
import com.example.zhxy.util.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;


/**
 * Created with IntelliJ IDEA.
 * ClassName: GradeController
 * Package: com.example.zhxy.controller
 * Description:
 * User: fzykd
 *
 * @Author: LQH
 * Date: 2023-03-14
 * Time: 16:10
 */

@Api(tags = "这是一个年级控制器")
//给整controller做一个介绍
@RestController
@RequestMapping("/sms/gradeController")
public class GradeController {

    @Autowired
    private GradeService gradeService;

    //年级管理 分页查询
    //GET
    //	http://localhost:9001/sms/gradeController/getGrades/1/3?gradeName=1
    @ApiOperation("删除Grader信息")
    @GetMapping("/getGrades/{pageNo}/{pageSize}")
    public Result getGrades(@ApiParam("(介绍参数信息) 分页查询的页码数") @PathVariable("pageNo") Integer pageNo,
                            @ApiParam("分页查询的页大小") @PathVariable("pageSize")
                                    Integer pageSize, @ApiParam("分页查询模糊查询的名字") String gradeName){
        //分页查询
        //1.构造分页构造器 page实现类 继承了 ipage接口
        Page<Grade> page1 = new Page(pageNo,pageSize);
        //2.调用服务层方法 传入page1 和 查询条件
        IPage<Grade> iPage = gradeService.getGradeByOpr(page1,gradeName);
        return Result.ok(iPage);
    }

    //班级管理中 下拉框中的年级信息
    //GET
    //http://localhost:9001/sms/gradeController/getGrades
    @ApiOperation("查询年级管理的信息")
    @GetMapping("/getGrades")
    public Result getGrade(){

        //查询全部信息的方法 返回一个List集合
        List<Grade> grades = gradeService.getGrades();
        //gradeService.list();也可以直接查出来
        return Result.ok(grades);

    }

    //POST
    //http://localhost:9001/sms/gradeController/saveOrUpdateGrade
    //年级管理 添加年级信息
    @ApiOperation("新增和修改年级")
    @PostMapping("/saveOrUpdateGrade")
    public Result saveOrUpdate(@ApiParam("前端传来的Grade对象 对象中有id是修改 没id是新增") @RequestBody Grade grade){
        //1.接收参数 @RequestBody
        //2.调用服务层方法
        //前端传来的是JSON形式的参数 使用 @RequestBody 接收转换JSON字符串
        //否则 SQL Syntax Error Exception SQL语法错误 参数 没有传入到SQL当中
        //新增数据 调用服务层代码 mybatis-plus 提供 修改个新增都可以使用的方法

        //这两行代码 足够完成新增和修改
        gradeService.saveOrUpdate(grade);
        return Result.ok();
    }


    //DELETE
    //	http://localhost:9001/sms/gradeController/deleteGrade
    //年级管理 删除 和 批量删除 前端传来的是JSON集合[6,5]
    @ApiOperation("批量删除 年级信息")
    @DeleteMapping("/deleteGrade")
    public Result deleteGrade(@ApiParam("前端传来的JSON集合的id") @RequestBody List<Integer> list){
        //调用删除方法 根据传来的id进行删除 ByIds可以删除一个 也可以删除多个
        gradeService.removeByIds(list);
        return Result.ok();
    }


}
